A Serial Peripheral Interface (SPI) bus is a synchronous serial data link standard that operates in full duplex mode. Devices communicate in a master/slave mode where the master device initiates the data frame. SPI protocol supports fixed 8-bit word lengths or other word lengths (e.g., 16-bit, 32-bit). It is not possible, however, to support SPI protocols using non-standard data lengths (e.g., 9-bit data length) without an additional timer or I/O pins or software overhead. The same issue is applicable for the Universal Asynchronous Receiver/Transmitter (USART), where protocols based on USART use different data lengths. Two examples are the Local Interconnect Network (LIN) and Digital Addressable Lighting Interface (DALI) buses, which cannot support non-standard data lengths without additional software overhead.
Conventional SPI or USART hardware designs support in-hardware fixed data length settings. In some designs, data length settings can vary a lot (e.g., from 4 bits to 14 or 16). Additionally, specific hardware must be developed to support DALI or LIN protocols. The drawback to these conventional designs is the cost or suboptimal microcontroller architecture for a defined application.